package io.yunho.yunho.interview.one.singleton.createbyuse;

/**
 * @author: Jason
 * @date: 2021/3/8 10:17
 * @description:
 */
public class SingletonUTest {
    public static void main(String[] args) {
//        SingletonUOne s1 = SingletonUOne.getInstance();
//        SingletonUOne s2 = SingletonUOne.getInstance();
//        System.out.println(s1 == s2);
//        System.out.println(s1);
//        System.out.println(s2);
//        Callable<SingletonUOne> c = new Callable<SingletonUOne>() {
//            @Override
//            public SingletonUOne call() throws Exception {
//                return SingletonUOne.getInstance();
//            }
//        };
//        ExecutorService es = Executors.newFixedThreadPool(2);
//        Future<SingletonUOne> f1 = es.submit(c);
//        Future<SingletonUOne> f2 = es.submit(c);
//        try {
//            SingletonUOne s1 = f1.get();
//            SingletonUOne s2 = f2.get();
//            System.out.println(s1 == s2);
//            System.out.println(s1);
//            System.out.println(s2);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        } catch (ExecutionException e) {
//            e.printStackTrace();
//        }
//        es.shutdown();
//        for(int i=0;i<10;i++){
//            new Thread(()->{
//                SingletonUOneUnsafe s1 = SingletonUOneUnsafe.getInstance();
//                System.out.println(s1);
//            },String.valueOf(i)).start();
//        }
        for(int i=0;i<10;i++){
            new Thread(()->{
                SingletonUOneSafe s1 = SingletonUOneSafe.getInstance();
                System.out.println(s1);
            },String.valueOf(i)).start();
        }
//        for(int i=0;i<20;i++){
//            new Thread(()->{
//                SingletonUOneSafeInner s1 = SingletonUOneSafeInner.getInstance();
//                System.out.println(s1);
//            },String.valueOf(i)).start();
//        }
    }
}
